package com.dt.platform.domain.eam;

import com.github.foxnic.dao.entity.Entity;
import javax.persistence.Table;
import com.github.foxnic.sql.meta.DBTable;
import com.dt.platform.constants.db.EAMTables.RFID_BASE_STATION;
import javax.persistence.Id;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Transient;
import java.util.Map;
import com.github.foxnic.dao.entity.EntityContext;



/**
 * rfid基站
 * @author 金杰 , maillank@qq.com
 * @since 2021-11-03 15:24:02
 * @sign 2FB38690CF4235B69861282A362ED1DD
 * 此文件由工具自动生成，请勿修改。若表结构或配置发生变动，请使用工具重新生成。
*/

@Table(name = "rfid_base_station")
public class BaseStation extends Entity {

	private static final long serialVersionUID = 1L;

	public static final DBTable TABLE =RFID_BASE_STATION.$TABLE;
	
	/**
	 * 主键：主键
	*/
	@Id
	@ApiModelProperty(required = true,value="主键" , notes = "主键")
	private String id;
	
	/**
	 * 区域主键：区域主键
	*/
	@ApiModelProperty(required = false,value="区域主键" , notes = "区域主键")
	private String areaId;
	
	/**
	 * 基站名称：基站名称
	*/
	@ApiModelProperty(required = false,value="基站名称" , notes = "基站名称")
	private String name;
	
	/**
	 * 经度：经度
	*/
	@ApiModelProperty(required = false,value="经度" , notes = "经度")
	private BigDecimal longitude;
	
	/**
	 * 纬度：纬度
	*/
	@ApiModelProperty(required = false,value="纬度" , notes = "纬度")
	private BigDecimal latitude;
	
	/**
	 * 设备ID：设备ID
	*/
	@ApiModelProperty(required = false,value="设备ID" , notes = "设备ID")
	private String deviceId;
	
	/**
	 * 设备类型：1：无源；2：有源
	*/
	@ApiModelProperty(required = false,value="设备类型" , notes = "1：无源；2：有源")
	private String deviceType;
	
	/**
	 * 是否在线：是否在线
	*/
	@ApiModelProperty(required = false,value="是否在线" , notes = "是否在线")
	private Integer isOnLine;
	
	/**
	 * 工作类型：1：入基站；2：出基站；3：范围基站；4：工位基站
	*/
	@ApiModelProperty(required = false,value="工作类型" , notes = "1：入基站；2：出基站；3：范围基站；4：工位基站")
	private String workType;
	
	/**
	 * 创建人ID：创建人ID
	*/
	@ApiModelProperty(required = false,value="创建人ID" , notes = "创建人ID")
	private String createBy;
	
	/**
	 * 创建时间：创建时间
	*/
	@ApiModelProperty(required = false,value="创建时间" , notes = "创建时间")
	private Date createTime;
	
	/**
	 * 修改人ID：修改人ID
	*/
	@ApiModelProperty(required = false,value="修改人ID" , notes = "修改人ID")
	private String updateBy;
	
	/**
	 * 修改时间：修改时间
	*/
	@ApiModelProperty(required = false,value="修改时间" , notes = "修改时间")
	private Date updateTime;
	
	/**
	 * 是否已删除：是否已删除
	*/
	@ApiModelProperty(required = true,value="是否已删除" , notes = "是否已删除")
	private Integer deleted;
	
	/**
	 * 删除人ID：删除人ID
	*/
	@ApiModelProperty(required = false,value="删除人ID" , notes = "删除人ID")
	private String deleteBy;
	
	/**
	 * 删除时间：删除时间
	*/
	@ApiModelProperty(required = false,value="删除时间" , notes = "删除时间")
	private Date deleteTime;
	
	/**
	 * 数据版本号：数据版本号
	*/
	@ApiModelProperty(required = true,value="数据版本号" , notes = "数据版本号")
	private Integer version;
	
	/**
	 * 基站区域：基站区域
	*/
	@ApiModelProperty(required = false,value="基站区域" , notes = "基站区域")
	private Position deviceArea;
	
	/**
	 * 获得 主键<br>
	 * 主键
	 * @return 主键
	*/
	public String getId() {
		return id;
	}
	
	/**
	 * 设置 主键
	 * @param id 主键
	 * @return 当前对象
	*/
	public BaseStation setId(String id) {
		this.id=id;
		return this;
	}
	
	/**
	 * 获得 区域主键<br>
	 * 区域主键
	 * @return 区域主键
	*/
	public String getAreaId() {
		return areaId;
	}
	
	/**
	 * 设置 区域主键
	 * @param areaId 区域主键
	 * @return 当前对象
	*/
	public BaseStation setAreaId(String areaId) {
		this.areaId=areaId;
		return this;
	}
	
	/**
	 * 获得 基站名称<br>
	 * 基站名称
	 * @return 基站名称
	*/
	public String getName() {
		return name;
	}
	
	/**
	 * 设置 基站名称
	 * @param name 基站名称
	 * @return 当前对象
	*/
	public BaseStation setName(String name) {
		this.name=name;
		return this;
	}
	
	/**
	 * 获得 经度<br>
	 * 经度
	 * @return 经度
	*/
	public BigDecimal getLongitude() {
		return longitude;
	}
	
	/**
	 * 设置 经度
	 * @param longitude 经度
	 * @return 当前对象
	*/
	public BaseStation setLongitude(BigDecimal longitude) {
		this.longitude=longitude;
		return this;
	}
	
	/**
	 * 获得 纬度<br>
	 * 纬度
	 * @return 纬度
	*/
	public BigDecimal getLatitude() {
		return latitude;
	}
	
	/**
	 * 设置 纬度
	 * @param latitude 纬度
	 * @return 当前对象
	*/
	public BaseStation setLatitude(BigDecimal latitude) {
		this.latitude=latitude;
		return this;
	}
	
	/**
	 * 获得 设备ID<br>
	 * 设备ID
	 * @return 设备ID
	*/
	public String getDeviceId() {
		return deviceId;
	}
	
	/**
	 * 设置 设备ID
	 * @param deviceId 设备ID
	 * @return 当前对象
	*/
	public BaseStation setDeviceId(String deviceId) {
		this.deviceId=deviceId;
		return this;
	}
	
	/**
	 * 获得 设备类型<br>
	 * 1：无源；2：有源
	 * @return 设备类型
	*/
	public String getDeviceType() {
		return deviceType;
	}
	
	/**
	 * 设置 设备类型
	 * @param deviceType 设备类型
	 * @return 当前对象
	*/
	public BaseStation setDeviceType(String deviceType) {
		this.deviceType=deviceType;
		return this;
	}
	
	/**
	 * 获得 是否在线<br>
	 * 是否在线
	 * @return 是否在线
	*/
	public Integer getIsOnLine() {
		return isOnLine;
	}
	
	/**
	 * 设置 是否在线
	 * @param isOnLine 是否在线
	 * @return 当前对象
	*/
	public BaseStation setIsOnLine(Integer isOnLine) {
		this.isOnLine=isOnLine;
		return this;
	}
	
	/**
	 * 获得 工作类型<br>
	 * 1：入基站；2：出基站；3：范围基站；4：工位基站
	 * @return 工作类型
	*/
	public String getWorkType() {
		return workType;
	}
	
	/**
	 * 设置 工作类型
	 * @param workType 工作类型
	 * @return 当前对象
	*/
	public BaseStation setWorkType(String workType) {
		this.workType=workType;
		return this;
	}
	
	/**
	 * 获得 创建人ID<br>
	 * 创建人ID
	 * @return 创建人ID
	*/
	public String getCreateBy() {
		return createBy;
	}
	
	/**
	 * 设置 创建人ID
	 * @param createBy 创建人ID
	 * @return 当前对象
	*/
	public BaseStation setCreateBy(String createBy) {
		this.createBy=createBy;
		return this;
	}
	
	/**
	 * 获得 创建时间<br>
	 * 创建时间
	 * @return 创建时间
	*/
	public Date getCreateTime() {
		return createTime;
	}
	
	/**
	 * 设置 创建时间
	 * @param createTime 创建时间
	 * @return 当前对象
	*/
	public BaseStation setCreateTime(Date createTime) {
		this.createTime=createTime;
		return this;
	}
	
	/**
	 * 获得 修改人ID<br>
	 * 修改人ID
	 * @return 修改人ID
	*/
	public String getUpdateBy() {
		return updateBy;
	}
	
	/**
	 * 设置 修改人ID
	 * @param updateBy 修改人ID
	 * @return 当前对象
	*/
	public BaseStation setUpdateBy(String updateBy) {
		this.updateBy=updateBy;
		return this;
	}
	
	/**
	 * 获得 修改时间<br>
	 * 修改时间
	 * @return 修改时间
	*/
	public Date getUpdateTime() {
		return updateTime;
	}
	
	/**
	 * 设置 修改时间
	 * @param updateTime 修改时间
	 * @return 当前对象
	*/
	public BaseStation setUpdateTime(Date updateTime) {
		this.updateTime=updateTime;
		return this;
	}
	
	/**
	 * 获得 是否已删除<br>
	 * 是否已删除
	 * @return 是否已删除
	*/
	public Integer getDeleted() {
		return deleted;
	}
	
	/**
	 * 设置 是否已删除
	 * @param deleted 是否已删除
	 * @return 当前对象
	*/
	public BaseStation setDeleted(Integer deleted) {
		this.deleted=deleted;
		return this;
	}
	
	/**
	 * 获得 删除人ID<br>
	 * 删除人ID
	 * @return 删除人ID
	*/
	public String getDeleteBy() {
		return deleteBy;
	}
	
	/**
	 * 设置 删除人ID
	 * @param deleteBy 删除人ID
	 * @return 当前对象
	*/
	public BaseStation setDeleteBy(String deleteBy) {
		this.deleteBy=deleteBy;
		return this;
	}
	
	/**
	 * 获得 删除时间<br>
	 * 删除时间
	 * @return 删除时间
	*/
	public Date getDeleteTime() {
		return deleteTime;
	}
	
	/**
	 * 设置 删除时间
	 * @param deleteTime 删除时间
	 * @return 当前对象
	*/
	public BaseStation setDeleteTime(Date deleteTime) {
		this.deleteTime=deleteTime;
		return this;
	}
	
	/**
	 * 获得 数据版本号<br>
	 * 数据版本号
	 * @return 数据版本号
	*/
	public Integer getVersion() {
		return version;
	}
	
	/**
	 * 设置 数据版本号
	 * @param version 数据版本号
	 * @return 当前对象
	*/
	public BaseStation setVersion(Integer version) {
		this.version=version;
		return this;
	}
	
	/**
	 * 获得 基站区域<br>
	 * 基站区域
	 * @return 基站区域
	*/
	public Position getDeviceArea() {
		return deviceArea;
	}
	
	/**
	 * 设置 基站区域
	 * @param deviceArea 基站区域
	 * @return 当前对象
	*/
	public BaseStation setDeviceArea(Position deviceArea) {
		this.deviceArea=deviceArea;
		return this;
	}

	/**
	 * 将自己转换成指定类型的PO
	 * @param poType  PO类型
	 * @return BaseStation , 转换好的 BaseStation 对象
	*/
	@Transient
	public <T extends Entity> T toPO(Class<T> poType) {
		return EntityContext.create(poType, this);
	}

	/**
	 * 将自己转换成任意指定类型
	 * @param pojoType  Pojo类型
	 * @return BaseStation , 转换好的 PoJo 对象
	*/
	@Transient
	public <T> T toPojo(Class<T> pojoType) {
		if(Entity.class.isAssignableFrom(pojoType)) {
			return (T)this.toPO((Class<Entity>)pojoType);
		}
		try {
			T pojo=pojoType.newInstance();
			EntityContext.copyProperties(pojo, this);
			return pojo;
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}

	/**
	 * 将 Map 转换成 BaseStation
	 * @param baseStationMap 包含实体信息的 Map 对象
	 * @return BaseStation , 转换好的的 BaseStation 对象
	*/
	@Transient
	public static BaseStation createFrom(Map<String,Object> baseStationMap) {
		if(baseStationMap==null) return null;
		BaseStation po = EntityContext.create(BaseStation.class, baseStationMap);
		return po;
	}

	/**
	 * 将 Pojo 转换成 BaseStation
	 * @param pojo 包含实体信息的 Pojo 对象
	 * @return BaseStation , 转换好的的 BaseStation 对象
	*/
	@Transient
	public static BaseStation createFrom(Object pojo) {
		if(pojo==null) return null;
		BaseStation po = EntityContext.create(BaseStation.class,pojo);
		return po;
	}

	/**
	 * 创建一个 BaseStation，等同于 new
	 * @return BaseStation 对象
	*/
	@Transient
	public static BaseStation create() {
		return EntityContext.create(BaseStation.class);
	}
}